﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using ERP.Team.HumanResources;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace ERP.ERPSystem.HumanResources
{
    /// <summary>
    /// 人资系统--wyx
    /// </summary>
    public interface IOnboardingServices : IApplicationService
    {
        /// <summary>
        /// 分页查询入职申请数据
        /// </summary>
        /// <param name="PersonName"> (筛选条件) 申请人姓名 </param>
        /// <param name="InterviewPeople"> (筛选条件) 面试官姓名 </param>
        /// <param name="page">页码，从1开始</param>
        /// <param name="pageSize">每页显示的数量</param>
        /// <returns>分页的入职审核实体列表</returns>
        Task<PagedResultDto<OnboardingReview>> QueryPaged(
            string? PersonName,
            string? InterviewPeople,
            int page = 1,
            int pageSize = 10);

        /// <summary>
        /// 根据当前筛选条件导出数据到Excel文件
        /// </summary>
        /// <param name="PersonName"> (筛选条件) 申请人姓名 </param>
        /// <param name="InterviewPeople"> (筛选条件) 面试官姓名 </param>
        /// <returns>Excel文件的字节数组</returns>
        Task<byte[]> ExportToExcel(string? PersonName, string? InterviewPeople);

        ///// <summary>
        ///// 查询
        ///// </summary>
        ///// <returns>返回查询到的数据</returns>
        //Task<List<OnboardingReview>> Query(string? PersonName, string? InterviewPeople);

        ///// <summary>
        ///// 插入入职申请
        ///// </summary>
        ///// <param name="onboardingReview">入职申请实体</param>
        ///// <param name="autoSave">是否自动保存</param>
        ///// <param name="cancellationToken">取消令牌</param>
        ///// <returns>返回结果</returns>
        //Task<OnboardingReview> InsertAsync(OnboardingReview onboardingReview, bool autoSave = false, CancellationToken cancellationToken = default);

        ///// <summary>
        ///// 更新入职申请
        ///// </summary>
        ///// <param name="onboardingReview">入职申请实体</param>
        ///// <param name="autoSave">是否自动保存</param>
        ///// <param name="cancellationToken">取消令牌</param>
        ///// <returns>返回结果</returns>
        //Task<OnboardingReview> UpdateAsync(OnboardingReview onboardingReview, bool autoSave = false, CancellationToken cancellationToken = default);

        ///// <summary>
        ///// 删除入职申请
        ///// </summary>
        ///// <param name="onboardingReview">入职申请实体</param>
        ///// <param name="autoSave">是否自动保存</param>
        ///// <param name="cancellationToken">取消令牌</param>             
        ///// <returns>返回结果</returns>
        //Task DeleteAsync(OnboardingReview onboardingReview, bool autoSave = false, CancellationToken cancellationToken = default);
    }
}
